// pages/shopcart/shopcart.js
/*
  购物车功能分析：
    * 加入购物车：添加信息到本地
    * 显示购物车数据
    * 单选、全选、反选
    * 统计：总价、总数量
    * 数量加减
    * 删除某个商品
    * 加入订单：跳到订单页
    
  购物车数据存储：
    * 数据存在本地：没有登陆，点击结算就让用户登陆，把本地数据转存到数据库(选这种做法)
    * 数据存到数据库：加入购物车必须要登陆
  
  存数据到本地：数据的存储结构
    [{
      gid : 商品id,
      gtitle : 商品标题,
      gprice : 商品价格,
      gnum : 商品数量,
      gimgurl : 商品缩略图,
      gchecked : true 是否要购买：复选框的状态
    }]
*/
//引入类库
const shopcartCtrl = require('../../utils/shopcartCtrl');
import Dialog from '../../miniprogram_npm/@vant/weapp/dialog/dialog';
// console.log(shopcartCtrl,888)
Page({

  /**
   * 页面的初始数据
   */
  data: {
    goodsList : [],//购物车列表数据
    selectAll : true,//全选反选的状态
    total : 0,//存放总数量：选中状态
    price : 0, //合计
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //在tabbar的页面，onload只会加载一次：缓存处理
    //获取数据渲染页面
    this.getCartList();

    //检验封装的库方法的使用：记得切换到shopcart页面
    // let data = [{
    //   gid : '78867',
    //   gtitle : '商品标题',
    //   gprice : 78,
    //   gnum : 2,
    //   gimgurl : '商品缩略图',
    //   gchecked : true
    // }]
    // ShopCartCtrl.setCartData(data);
    // let arr = shopcartCtrl.getCartData();
    // console.log('arr是', arr)
  },
  onShow(){
    //不会缓存
    //获取数据渲染页面
    this.getCartList();
  },
  //获取本地存储的数据，渲染购物车页面
  getCartList() {
    let goodsList = shopcartCtrl.getCartData();//得到数据
    this.setData({goodsList});//存数据到本地data对象
    let {total, price} = shopcartCtrl.getPriceCount();
    this.setData({total, price})
  },
  //单选功能
  selOne(ev) {
    // console.log('你变了');
    let {gid} = ev.target.dataset;
    console.log('gid是', gid);
    let selectAll = shopcartCtrl.selOneGood(gid);
     //获取数据渲染页面
     this.getCartList();
     //单选控制全选
     this.setData({selectAll});
  },
  //全选、反选
  selAllGood() {
    //全选的状态
    let status = !this.data.selectAll;
    console.log('全选的状态', status);
    shopcartCtrl.selAll(status);
    //获取数据渲染页面
    this.getCartList();
    this.setData({selectAll:status});
  },
  //加数量
  addNum(ev) {
    let {gid} = ev.target.dataset;
    shopcartCtrl.addGoodNum(gid);
    //获取数据渲染页面
    this.getCartList();
  },
  //减数量
  cutNum(ev) {
    let {gid} = ev.target.dataset;
    shopcartCtrl.cutGoodNum(gid);
     //获取数据渲染页面
     this.getCartList();
  },
  //删除功能
  onClose(ev) {
    const { instance } = ev.detail;
    let {gid} = ev.target.dataset;
    Dialog.confirm({
      title: '警告',
      message: '您确定要删除我吗？',
    })
      .then(() => {
        // on confirm
        console.log('确定了');
        //删除某个商品
        shopcartCtrl.delect(gid);
        //获取数据渲染页面
        this.getCartList();
        instance.close();//关闭滑块
      })
      .catch(() => {
        // on cancel
        console.log('取消了');
        instance.close();
      });
  
    
  },
  //结算按钮，点击跳转到订单页
  onSubmit() {
    console.log('准备跳转订单页');
    wx.navigateTo({
      url: '/pages/order/order',
    })
  }
})